//
//  WBBaseViewController.swift
//  Weibo
//
//  Created by 李磊 on 2017/6/5.
//  Copyright © 2017年 李磊www. All rights reserved.
//

import UIKit

//1、 extension 中不能有属性
//2/ extension 中不能重写‘父类’本类的方法，（但是可以重写父类extension中的方法）

class WBBaseViewController: UIViewController {
    
    // 用户登陆标记
    var userLogin = false
    
    
    /// 表格视图 - 如果用户没有登录，就不创建
    var tableView: UITableView?
    
    /// 刷新控件
    var refreshControl: UIRefreshControl?
    /// 上拉刷新标记
    var  isPullup = false
    
    

    override func viewDidLoad() {
        super.viewDidLoad()

        setupUI()
        loadData()
    }
    
    
    /// 加载数据  由子类实现
     func loadData()  {
        refreshControl?.endRefreshing()
    }


}


//MARK: - UI
extension WBBaseViewController {
    func setupUI()  {
        view.backgroundColor = UIColor.white
        
        userLogin ? setupTableView() : setupVisitorView()
    }
    
    // 创建表格视图
    private func setupTableView() {
        
        tableView = UITableView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height), style: .plain)
        tableView?.dataSource = self
        tableView?.delegate = self
        view.addSubview(tableView!)
        
        // 创建下拉刷新控件
        refreshControl = UIRefreshControl()
        // tableview添加
        tableView?.addSubview(refreshControl!)
        
        // 添加事件
        refreshControl?.addTarget(self, action: #selector(loadData), for: .valueChanged)
    }
    
    //访客视图
    private func setupVisitorView() {
        let visitorView = WBVisitorView(frame: view.bounds)
        
        
        view.insertSubview(visitorView, at: 0)
    }

}


// MARK: - tableView delegate&dataSource
extension WBBaseViewController: UITableViewDataSource,UITableViewDelegate{
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    /// 在显示最后一行的时候  做上拉杀心
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        // 1.取出row
        let row = indexPath.row
        // 2.判断 indexPath是否是最后一行（Section最大  row最大）
        // 最大组数
        let maxSection = tableView.numberOfSections - 1
        if row < 0 || maxSection < 0 {
            return
        }
        print("section --- \(maxSection)")
        
        let count = tableView.numberOfRows(inSection: maxSection)
        
        if row == (count - 1) && !isPullup {
            
            isPullup = true
            // 开始刷新
            loadData()
        }
        
        
        
        
    }
    
}
